<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>优势</title>
  </head>
  <body>
    <script>
      /*
            优势：
                1、指定回调函数的方式更加灵活
                    旧的：必须在启动异步任务前指定
                    promise：启动异步任务 =》返回promise对象 =》给promise对象绑定回调函数（甚至可以在异步任务结束后指定）
                2、支持链式调用，可以解决回调地狱问题：
                    （1）什么是回调地狱：
                            回调地狱：回调函数嵌套调用，外部回调函数异步执行的结果是嵌套的回调函数执行的条件
                    （2）回调地狱的弊病：
                            代码不便于阅读、不便于异常的处理
                    （3）一个不是很优秀的解决方案
                            then的链式调用
                    （4）终极解决方案：
                        async/await （底层实际上依然使用的then的链式调用）
        */
    </script>
  </body>
</html>
